import Utility.Hash
import Data.Maybe
+import Data.List
import Data.Bits (shiftL)
import qualified Data.Set as S
import qualified Data.ByteArray as BA
-import Data.List
-import Prelude
-- The Int is how many UUIDs to pick.
type BalancedPicker = S.Set UUID -> Key -> Int -> [UUID]
#ifdef mingw32_HOST_OS
import qualified System.FilePath.Posix as Posix
#endif
-import qualified Data.Semigroup as Sem
-import Prelude
{- Configures how to build an import tree. -}
data ImportTreeConfig
-- import.
newtype PostExportLogUpdate = PostExportLogUpdate (Annex ())
-instance Sem.Semigroup PostExportLogUpdate where
+instance Semigroup PostExportLogUpdate where
PostExportLogUpdate a <> PostExportLogUpdate b =
PostExportLogUpdate (a >> b)
import Types.MetaData
import qualified Data.Text as T
-import Data.Monoid
-import Prelude
tagMetaField :: MetaField
tagMetaField = mkMetaFieldUnchecked "tag"
import Data.Maybe
import qualified Data.Map as M
-import Control.Applicative
-import Prelude
{- Generates a gpg user id that is not used by any existing secret key -}
newUserId :: GpgCmd -> IO UserId
module Assistant.Types.BranchChange where
import Control.Concurrent.MSampleVar
-import Control.Applicative
-import Prelude
newtype BranchChangeHandle = BranchChangeHandle (MSampleVar ())
import qualified Utility.FileIO as F
import Control.Monad
-import Control.Applicative
-import Prelude
tests :: [TestCase]
tests =
import System.Environment
#ifndef mingw32_HOST_OS
import System.Posix.User
-import Prelude
#endif
systemwideInstall :: IO Bool
module Build.LinuxMkLibs (mklibs) where
-import Data.Maybe
import Control.Monad
-import Data.List
import System.Posix.Files
import Control.Monad.IfElse
-import Control.Applicative
import qualified System.Info
-import Prelude
+import Data.List
+import Data.Maybe
import Utility.LinuxMkLibs
import Utility.OsPath
import System.Exit
import Data.Maybe
import Utility.Exception
-import Control.Applicative
-import Prelude
buildMansOrWarn :: IO ()
buildMansOrWarn = do
import Data.List
import Control.Applicative
import System.Posix.Files
-import Prelude
import Utility.PartialPrelude
import Utility.OsPath
import Data.List
import System.Environment
import Data.Char
-import Control.Applicative
-import Prelude
import Utility.Monad
import Utility.Exception
import Data.ByteString.Short (fromShort)
import System.PosixCompat.Files (isDirectory)
import Data.Ord
-import qualified Data.Semigroup as Sem
-import Prelude
import Command
import qualified Git
, backendsKeys :: M.Map KeyVariety Integer
}
-instance Sem.Semigroup KeyInfo where
+instance Semigroup KeyInfo where
a <> b = KeyInfo
{ countKeys = countKeys a + countKeys b
, sizeKeys = sizeKeys a + sizeKeys b
import Control.Concurrent
import Control.Monad.IO.Class (liftIO, MonadIO)
-import Control.Applicative
-import Prelude
-- The MVar is always left full except when actions are run
-- that access the database.
module Database.Keys.Tables where
-import Data.Monoid
-import qualified Data.Semigroup as Sem
-import Prelude
-
data DbTable = AssociatedTable | ContentTable
deriving (Eq, Show)
}
deriving (Show)
-instance Sem.Semigroup DbTablesChanged where
+instance Semigroup DbTablesChanged where
a <> b = DbTablesChanged
{ associatedTable = associatedTable a || associatedTable b
, contentTable = contentTable a || contentTable b
import Database.Persist.Sqlite
import Control.Concurrent
import Data.Time.Clock
-import Control.Applicative
-import Prelude
{- A DbQueue wraps a DbHandle, adding a queue of writes to perform.
-
import qualified Data.Set as S
import Control.Concurrent.Async
-import qualified Data.Semigroup as Sem
-import Prelude
data FsckResults
= FsckFoundMissing
appendFsckOutput AllDuplicateEntriesWarning NoFsckOutput = AllDuplicateEntriesWarning
appendFsckOutput NoFsckOutput AllDuplicateEntriesWarning = AllDuplicateEntriesWarning
-instance Sem.Semigroup FsckOutput where
+instance Semigroup FsckOutput where
(<>) = appendFsckOutput
instance Monoid FsckOutput where
import Data.Word
import Data.String
import qualified Data.ByteString as S
-import qualified Data.Semigroup as Sem
-import Prelude
unquote :: S.ByteString -> RawFilePath
unquote b = case S.uncons b of
instance IsString StringContainingQuotedPath where
fromString = UnquotedByteString . encodeBS
-instance Sem.Semigroup StringContainingQuotedPath where
+instance Semigroup StringContainingQuotedPath where
UnquotedString a <> UnquotedString b = UnquotedString (a <> b)
UnquotedByteString a <> UnquotedByteString b = UnquotedByteString (a <> b)
a <> b = a :+: b
import qualified Data.ByteString as S
import qualified Data.List.NonEmpty as NE
import System.Posix.Types
-import qualified Data.Semigroup as Sem
-import Prelude
{- Support repositories on local disk, and repositories accessed via an URL.
-
-- with an empty value
deriving (Ord, Eq)
-instance Sem.Semigroup ConfigValue where
+instance Semigroup ConfigValue where
ConfigValue a <> ConfigValue b = ConfigValue (a <> b)
a <> NoConfigValue = a
NoConfigValue <> b = b
import qualified Data.Attoparsec.ByteString.Lazy as AL
import qualified Data.Attoparsec.ByteString.Char8 as A8
import Data.ByteString.Builder
-import qualified Data.Semigroup as Sem
-import Prelude
data LogEntry v = LogEntry
{ changed :: VectorClock
newtype MapLog f v = MapLog (M.Map f (LogEntry v))
deriving (Show, Eq)
-instance Ord f => Sem.Semigroup (MapLog f v)
+instance Ord f => Semigroup (MapLog f v)
where
a <> MapLog b = foldl' (\m (f, v) -> addMapLog f v m) a (M.toList b)
module Utility.Aeson,
) where
-import Control.Applicative
import qualified Data.Map as M
import qualified Data.Vector as V
import qualified Data.ByteString as S
import System.IO.Unsafe (unsafePerformIO)
import Control.Concurrent
import Data.Maybe
-import Data.Monoid
-import Prelude
import Types.Command (SeekInput(..))
import Types.ActionItem
import qualified Data.Set as S
import Control.Concurrent.Async
import Data.Time.Clock.POSIX
-import qualified Data.Semigroup as Sem
-import Prelude
data P2PHttpServerState = P2PHttpServerState
{ servedRepos :: M.Map UUID PerRepoServerState
, updateRepos = const mempty
}
-instance Sem.Semigroup P2PHttpServerState where
+instance Semigroup P2PHttpServerState where
a <> b = P2PHttpServerState
{ servedRepos = servedRepos a <> servedRepos b
, serverShutdownCleanup = do
import Data.Char
import Data.Maybe
import Data.Time.Clock.POSIX
-import Control.Applicative
import Control.DeepSeq
-import Prelude
newtype Offset = Offset Integer
deriving (Show, Eq, NFData, Num, Real, Ord, Enum, Integral)
import Annex
import Options.Applicative
-import qualified Data.Semigroup as Sem
-import Prelude
-- Some values cannot be fully parsed without performing an action.
-- The action may be expensive, so it's best to call finishParse on such a
, annexReadSetter :: AnnexRead -> AnnexRead
}
-instance Sem.Semigroup AnnexSetter where
+instance Semigroup AnnexSetter where
a <> b = AnnexSetter
{ annexStateSetter = annexStateSetter a >> annexStateSetter b
, annexReadSetter = annexReadSetter b . annexReadSetter a
module Types.DesktopNotify where
-import Data.Monoid
-import qualified Data.Semigroup as Sem
-import Prelude
-
data DesktopNotify = DesktopNotify
{ notifyStart :: Bool
, notifyFinish :: Bool
}
deriving (Show)
-instance Sem.Semigroup DesktopNotify where
+instance Semigroup DesktopNotify where
(DesktopNotify s1 f1) <> (DesktopNotify s2 f2) =
DesktopNotify (s1 || s2) (f1 || f2)
import Git.Types
import Data.Maybe
-import Data.Monoid
import qualified Data.ByteString as B
import qualified Data.Set as S
-import qualified Data.Semigroup as Sem
-import Prelude
-- Describes differences from the standard repository format.
--
}
appendDifferences _ _ = UnknownDifferences
-instance Sem.Semigroup Differences where
+instance Semigroup Differences where
(<>) = appendDifferences
instance Monoid Differences where
import Data.Time.Clock
import Git.Config (isTrueFalse, boolConfig)
-import Control.Applicative
-import Prelude
-
type GitAnnexVersion = String
data GitAnnexDistribution = GitAnnexDistribution
import Types.Key
-import qualified Data.Semigroup as Sem
import qualified Data.Set as S
-- The manifest contains an ordered list of git bundle keys.
instance Monoid Manifest where
mempty = Manifest mempty mempty
-instance Sem.Semigroup Manifest where
+instance Semigroup Manifest where
a <> b = mkManifest
(inManifest a <> inManifest b)
(S.union (outManifest a) (outManifest b))
import Data.Char
import System.Posix.Types
import Foreign.C.Types
-import Data.Monoid
import Control.Applicative
import GHC.Generics
import Control.DeepSeq
-import Prelude
{- A Key has a unique name, which is derived from a particular backend,
- and may contain other optional metadata. -}
import Data.Time.Clock.POSIX
import Control.Concurrent
-import Control.Applicative
-import Prelude
{- Enough information to uniquely identify a transfer. -}
data Transfer = Transfer
import Data.String
import Data.ByteString.Builder
import Control.DeepSeq
-import qualified Data.Semigroup as Sem
import Common
import Git.Types (ConfigValue(..))
-- A description of a UUID.
newtype UUIDDesc = UUIDDesc B.ByteString
- deriving (Eq, Sem.Semigroup, Monoid, IsString)
+ deriving (Eq, Semigroup, Monoid, IsString)
fromUUIDDesc :: UUIDDesc -> String
fromUUIDDesc (UUIDDesc d) = decodeBS d
module Types.VectorClock where
import Data.Time.Clock.POSIX
-import Control.Applicative
-import Prelude
import Utility.QuickCheck
import qualified Data.Set
import qualified Data.Map
import qualified Data.Vector
-import Prelude
import Utility.FileSystemEncoding
#ifdef WITH_OSPATH
import Data.String
import Data.Time
import System.IO.Unsafe (unsafePerformIO)
-import qualified Data.Semigroup as Sem
-import Prelude
import Utility.FileSystemEncoding
= DebugSelector (DebugSource -> Bool)
| NoDebugSelector
-instance Sem.Semigroup DebugSelector where
+instance Semigroup DebugSelector where
DebugSelector a <> DebugSelector b = DebugSelector (\v -> a v || b v)
NoDebugSelector <> NoDebugSelector = NoDebugSelector
NoDebugSelector <> b = b
#endif
import Control.Monad
import System.PosixCompat.Files (isDirectory, isSymbolicLink)
-import Control.Applicative
import System.IO.Unsafe (unsafeInterleaveIO)
-import Data.Maybe
-import Prelude
import Utility.OsPath
import Utility.Exception
) where
import Control.Monad
-import Control.Applicative
import Control.Monad.IO.Class
import Control.Monad.IfElse
import System.IO.Error
-import Data.Maybe
-import Prelude
import Utility.SystemDirectory
import Utility.Path.AbsRel
import Control.Monad
import Control.Concurrent
import Data.Maybe
-import Prelude
#ifdef mingw32_HOST_OS
import qualified System.Win32 as Win32
import Utility.Exception
import Control.Applicative
import Data.Maybe
-import Prelude
import qualified System.Environment as E
#else
import qualified System.Posix.Env as PE
) where
import Utility.Exception
-import Control.Applicative
import Data.Maybe
-import Prelude
import qualified System.Environment as E
getEnv :: String -> IO (Maybe String)
import Data.Time.Clock
import Data.Time.Clock.POSIX (POSIXTime)
import Data.Char
-import Control.Applicative
-import Prelude
newtype Duration = Duration { durationSeconds :: Integer }
deriving (Eq, Ord, Read, Show)
import Data.Word
import Data.Memory.Endian
import Data.List
-import Control.Applicative
import Text.Printf
-import Prelude
extractIPAddress :: SockAddr -> Maybe String
extractIPAddress (SockAddrInet _ ipv4) =
import System.Posix.Files (isSymbolicLink)
import Data.Char
import Control.Monad.IfElse
-import Control.Applicative
-import Prelude
{- Installs a library. If the library is a symlink to another file,
- install the file it links to, and update the symlink to be relative. -}
import Data.Maybe
import Data.List
import Network.BSD
-import Control.Applicative
-import Prelude
type PidLockFile = OsPath
import Control.Concurrent.STM
import Control.Monad.Catch
import Control.Monad.IO.Class (liftIO, MonadIO)
-import Prelude
data LockHandle = LockHandle P.LockHandle FileLockOps
import Utility.LockPool.LockHandle
import Utility.ThreadScheduler
-import System.IO
import System.Posix
import Control.Concurrent.STM
import Data.Maybe
import Control.Monad
import Control.Monad.Catch
import Control.Monad.IO.Class
-import Control.Applicative
-import Prelude
-- Does locking using a pid lock, blocking until the lock is available
-- or the Seconds timeout if the pid lock is held by another process.
import Utility.LockPool.LockHandle
import Utility.FileMode
-import System.IO
import System.Posix
-import Data.Maybe
-import Control.Applicative
-import Prelude
-- Takes a shared lock, blocking until the lock is available.
lockShared :: Maybe ModeSetter -> LockFile -> IO LockHandle
import Control.Concurrent.Async
import Data.Char
import Data.List
-import Control.Applicative
-import Prelude
-- | A Magic Wormhole code.
newtype Code = Code String
import Data.Char
import Data.List
import System.Exit
-import Control.Applicative
import qualified Data.ByteString as S
import qualified Data.ByteString.Char8 as S8
import qualified Data.ByteString.Lazy as L
import qualified Data.ByteString.Lazy.Char8 as L8
-import Prelude
{- A version of hgetContents that is not lazy. Ensures file is
- all read before it gets closed. -}
import Control.Monad
import System.IO.Error
-import Prelude
#ifndef mingw32_HOST_OS
import System.PosixCompat.Files (isDirectory)
import Utility.Process
import Utility.Exception
-import Control.Applicative
-import Prelude
-
{- Haskell lacks uname(2) bindings, except in the
- Bindings.Uname addon. Rather than depend on that,
- use uname -n when available. -}
) where
import Options.Applicative
-import Data.Monoid
-import Prelude
-- | A switch that can be enabled using --foo and disabled using --no-foo.
--
import Data.List
import Data.Maybe
import Control.Monad
-import Control.Applicative
-import Prelude
import Author
import Utility.Monad
) where
import qualified Data.ByteString as B
-import Control.Applicative
-import Prelude
import Utility.Path
import Utility.UserInfo
#ifndef mingw32_HOST_OS
import Utility.Exception
import System.Posix.Files
-import Data.List
-import Control.Applicative
-import Prelude
#endif
{- Maximum size to use for a file in a specified directory.
prop_dirContains_regressionTest,
) where
-import Data.List
-import Data.Maybe
-import Control.Applicative
-import Prelude
-
import Common
import Utility.QuickCheck
import qualified Utility.OsString as OS
import Control.Exception
import qualified System.Posix.IO
import GHC.IO.Encoding (getLocaleEncoding)
-#else
-import Control.Applicative
#endif
import Data.Maybe
-import Prelude
-- | Runs a process and returns a transcript combining its stdout and
-- stderr, and whether it succeeded or failed.
import Data.Char
import System.Posix.Types
import Data.List.NonEmpty (NonEmpty(..))
-import Prelude
{- A String, but Arbitrary is limited to ascii.
-
import System.Exit
import System.FilePath
import Data.Char
-import Data.List
-import Control.Applicative
-import Prelude
-- | Parameters that can be passed to a shell command.
data CommandParam
import Data.Time.Calendar.OrdinalDate
import Data.Time.Format ()
import Data.Char
-import Control.Applicative
-import Prelude
{- Some sort of scheduled event. -}
data Schedule = Schedule Recurrence ScheduledTime
import Utility.Scheduled
import Utility.QuickCheck
-import Control.Applicative
-import Prelude
-
instance Arbitrary Schedule where
arbitrary = Schedule <$> arbitrary <*> arbitrary
import Author
import Utility.QuickCheck
import Utility.Split
-import Data.Function
+import Data.Function
import Data.List
-import Prelude
copyright :: Copyright
copyright = author JoeyHess (2000+30-20)
import Utility.Exception
#ifndef mingw32_HOST_OS
import Utility.Data
-import Control.Applicative
import System.Posix.User
#if MIN_VERSION_unix(2,8,0)
import System.Posix.User.ByteString (UserEntry)
#endif
#endif
-import Prelude
-
{- Current user's home directory.
-
- getpwent will fail on LDAP or NIS, so use HOME if set. -}